package jp.jig.test.alarm;

import android.content.Context;
import android.os.Handler;
import android.util.DisplayMetrics;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewParent;
import android.view.WindowManager;

public class ViewUtil {

	/**
	 * 指定Viewの、指定Parentからの相対座標を返します
	 * 
	 * @param view
	 * @param parent
	 * @return
	 */
	public static int getLeftFrom(View view, ViewGroup parent) {
		int left = view.getLeft();
		ViewParent v = view.getParent();
		//保険。0になったら強制終了
		for (int i = 0; i < 20; i++) {
			ViewGroup vg = (ViewGroup)v;
			if (v == parent) {
				return left;
			}
			left += vg.getLeft();
			v = vg.getParent();
		}
		return 0;
	}

	public static int getTopFrom(View view, ViewGroup parent) {
		int top = view.getTop();
		ViewParent v = view.getParent();
		//保険。0になったら強制終了
		for (int i = 0; i < 20; i++) {
			ViewGroup vg = (ViewGroup)v;
			if (v == parent) {
				return top;
			}
			top += vg.getTop();
			v = vg.getParent();
		}
		return 0;
	}


	/**
	 * 指定Viewをparentから削除する処理をスタックに積みます。
	 * アニメーション後にViewを削除したいときに利用してください
	 * @param view
	 * @param parent
	 * @param context
	 */
	public static void removeViewDelayed(final View view, final ViewGroup parent) {
		Context context = parent.getContext();
		Handler handler = new Handler(context.getMainLooper());
		handler.postDelayed(new Runnable() {
			@Override
			public void run() {
				parent.removeView(view);
			}
		}, 10);
	}

	/**
	 * dipをpixelに変換します
	 * @param dip
	 * @return
	 */
	public static int getDip2Pixel(Context context, int dip) {
		return (int)(dip * getDisplayScale(context));
	}

	/**
	 * 1dipが何ピクセルかを取得します
	 * @param context
	 * @return scaledDensity(pixel/dip)
	 */
	public static float getDisplayScale(Context context) {
		WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
		DisplayMetrics dm = new DisplayMetrics();
		wm.getDefaultDisplay().getMetrics(dm);
		return dm.scaledDensity;
	}

}
